Integration systems for enabling the exchange of items between heterogeneous applications exist. These systems typically enable two types of applications to exchange content or information. For example, a database application, a spreadsheet application and a word processing application may be integrated to communicate with one another.
One approach for enabling communication between heterogeneous applications is to implement a messaging scheme that allows the dissimilar applications to exchange data using messages. A message is a body of data that is formatted according to a particular format. An application may generate messages according to a particular format and then transmits the message to the other applications.
When all of the applications in communication with one another are developed by a single source, a single messaging scheme can be implemented across all of the applications so that each application is aware of all the other applications and knows how to communicate with them. However, when the applications are not all developed by a single source, some applications may not be able to communicate with other applications using messages because they do not support the same messaging scheme. Another problem is that some applications are not necessarily designed to communicate with other applications at all. Applications that are not designed to communicate with other applications through messages are not “message aware”.
One approach for providing communication between applications that do not all support compatible communication formats and protocols, or that are not all message aware, is to update the source code of the applications to implement a single message scheme in all of the applications. With a single messaging scheme, each application knows which other applications it has to communicate with, the expected format of the messages, and the protocol that will govern the communication of the messages.
Unfortunately, the single messaging scheme is not practical in most situations where the applications can come from many sources. It is difficult to get even a small set of application sources to agree on a common messaging scheme. However, agreement is virtually impossible when the applications to be integrated may come from virtually any source of any form of software application.
Another approach for providing communication between applications that do not all support compatible communication formats or that are not all “message aware” involves the use of adapters. An adapter is essentially a translator that converts data in one format to produce data in another format. The data before and after the translation contains the same information. However, the format of the data is changed. For example, an adapter may convert a message in format A to produce a message in format B.
In addition to converting the message format, an adapter must be able to communicate with the application from which it is receiving messages, and to which it is providing converted messages. Consequently, the hard-coded logic of the adapter must take into account the protocols required by each.
An adapter may be integrated into its corresponding application or may be more loosely associated with its corresponding application. The adapter approach distributes the process of integrating applications with one another. When the application transmits or “publishes” a message to a target application, the adapter ensures that the published message is converted into the format expected by the target application so that the target application will be able to successfully read the message. When the target application sends a request to the publishing application, an adapter ensures that the request is in the format expected by the intended application so that the application will be able to successfully decipher the request.
Because all of the logic required for the integration is incorporated into a single component, the adapter, the expertise level required to design that component is significant. Specifically, the adapter designer must be intimately familiar with the protocols and formats used by all applications the adapter is designed to integrate. Further, such an expert is unlikely to be in a position to know, much less provide hard-coded logic to support, user-specific business rules.